home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / giochi / aboulder.lha / ABoulderDash1.0 / graphics.s < prev    next >
Text File  |  1995-08-27  |  7KB  |  318 lines

  1.     opt    L+
  2.     opt    O2+
  3.     opt    OW-
  4.  
  5. *==========================================
  6. *
  7. * File:        graphics.s
  8. * Version:     1
  9. * Revision:    0
  10. * Created:     12-VII-1993
  11. * By:          FNC Slothouber
  12. * Last Update: 22-Jan-1995
  13. * By:          FNC Slothouber
  14. *
  15. *==========================================
  16.  
  17.     incdir    "include:"
  18.  
  19.     include graphics/graphics_lib.i
  20.     include graphics/view.i
  21.     include hardware/custom.i
  22. *    include hardware/intbits.i
  23.     include    execmacros.i
  24.     include    boulderdash.i
  25.  
  26.  
  27.     XREF    _GfxBase
  28.     XDEF    Draw_Object_32
  29.     XDEF    Draw_Object_48
  30.     XDEF    Draw_Object
  31.     XDEF    Draw_Object_Full_Down_32
  32.     XDEF    Scroll_Up
  33.     XDEF    Scroll_Down
  34.     XDEF    Scroll_Left
  35.     XDEF    Scroll_Right
  36.  
  37. *
  38. * Draw_Object_32
  39. *
  40. * A0 - plane pointer         D2 - Offset into display bitmap
  41. * A1 - plane pointer         D3 - Offset into graphics image bitmap
  42. * A3 - display planes        
  43. * A4 - image planes          
  44. * A5 - Custom Base           d5 - depth count
  45. *                            
  46.  
  47. Draw_Object_32 ; (display_planes,image_planes,offset_disp,offset_image)
  48. *                 A3             A4           D2          D3
  49.  
  50.     GRAFCALL WaitBlit
  51.     move.w    #GRAPHICS_width-2-2,bltamod(a5)
  52.     move.w    #BM_width-2-2,bltdmod(a5)
  53.  
  54.     moveq    #4*(GRAPHICS_d-1),d5
  55. .ll0    GRAFCALL WaitBlit
  56.     move.l    (a3,d5.w),a0
  57.     move.l    (a4,d5.w),a1
  58.     add.l    d2,a0
  59.     add.l    d3,a1
  60.     move.l    a1,bltapt(a5)
  61.     move.l    a0,bltdpt(a5)
  62.     move.w    #64*(GRID_OBJECT_HEIGHT)+(2*(GRID_OBJECT_WIDTH/16)),bltsize(a5)
  63.     subq.w    #4,d5
  64.     bpl.s    .ll0
  65.     rts
  66.  
  67. *
  68. * Draw_Object_48
  69. *
  70. * A0 - plane pointer         D2 - Offset into display bitmap
  71. * A1 - plane pointer         D3 - Offset into graphics image bitmap
  72. * A3 - display planes        
  73. * A4 - image planes          
  74. * A5 - Custom Base           d5 - depth count
  75. *                            
  76.  
  77. Draw_Object_48 ; (display_planes,image_planes,offset_disp,offset_image)
  78. *                 A3             A4           D2          D3
  79.     GRAFCALL WaitBlit
  80.     move.w    #GRAPHICS_width-2-2-2,bltamod(a5)
  81.     move.w    #BM_width-2-2-2,bltdmod(a5)
  82.  
  83.     moveq    #4*(GRAPHICS_d-1),d5
  84. .ll0    GRAFCALL WaitBlit
  85.     move.l    (a3,d5.w),a0
  86.     move.l    (a4,d5.w),a1
  87.     add.l    d2,a0
  88.     add.l    d3,a1
  89.     move.l    a1,bltapt(a5)
  90.     move.l    a0,bltdpt(a5)
  91.     move.w    #64*(GRID_OBJECT_HEIGHT)+(3*(GRID_OBJECT_WIDTH/16)),bltsize(a5)
  92.     subq.w    #4,d5
  93.     bpl.s    .ll0
  94.     rts
  95.  
  96. *
  97. * Draw_Object
  98. *
  99. * A0 - plane pointer         D2 - Offset into display bitmap
  100. * A1 - plane pointer         D3 - Offset into graphics image bitmap
  101. * A3 - display planes        
  102. * A4 - image planes          
  103. * A5 - Custom Base           d5 - depth count
  104. *                            
  105.  
  106. Draw_Object ; (display_planes,image_planes,offset_disp,offset_image)
  107. *              A3             A4           D2          D3
  108.  
  109.     GRAFCALL WaitBlit
  110.     move.w    #GRAPHICS_width-2,bltamod(a5)
  111.     move.w    #BM_width-2,bltdmod(a5)
  112.  
  113.     moveq    #4*(GRAPHICS_d-1),d5
  114. .ll0    GRAFCALL WaitBlit
  115.     move.l    (a3,d5.w),a0
  116.     move.l    (a4,d5.w),a1
  117.     add.l    d2,a0
  118.     add.l    d3,a1
  119.     move.l    a1,bltapt(a5)
  120.     move.l    a0,bltdpt(a5)
  121.     move.w    #64*(GRID_OBJECT_HEIGHT)+(GRID_OBJECT_WIDTH/16),bltsize(a5)
  122.     subq.w    #4,d5
  123.     bpl.s    .ll0
  124.     rts
  125.  
  126. *
  127. * Draw_Object_Full_Down_32
  128. *
  129. * A0 - plane pointer         D2 - Offset into display bitmap
  130. * A1 - plane pointer         D3 - Offset into graphics image bitmap
  131. * A3 - display planes        
  132. * A4 - image planes          
  133. * A5 - Custom Base           d5 - depth count
  134. *                            
  135.  
  136. Draw_Object_Full_Down_32
  137. *     ; (display_planes,image_planes,offset_disp,offset_image)
  138. *        A3             A4           D2          D3
  139.  
  140.     GRAFCALL WaitBlit
  141.     move.w    #GRAPHICS_width-2,bltamod(a5)
  142.     move.w    #BM_width-2,bltdmod(a5)
  143.  
  144.     moveq    #4*(GRAPHICS_d-1),d5
  145. .ll0    GRAFCALL WaitBlit
  146.     move.l    (a3,d5.w),a0
  147.     move.l    (a4,d5.w),a1
  148.     add.l    d2,a0
  149.     add.l    d3,a1
  150.     move.l    a1,bltapt(a5)
  151.     move.l    a0,bltdpt(a5)
  152.     move.w    #64*2*(GRID_OBJECT_HEIGHT)+(GRID_OBJECT_WIDTH/16),bltsize(a5)
  153.     subq.w    #4,d5
  154.     bpl.s    .ll0
  155.     rts
  156.  
  157. *
  158. * Scroll_Left
  159. * A3 - bitmap
  160. * A4 - custom base
  161. *
  162. *
  163. *
  164.  
  165. *==============
  166. * Scroll_Left
  167. *==============
  168.  
  169. Scroll_Left ; (Bitmap),a3
  170.  
  171. Scl_REGS    REG    a3/a4
  172.  
  173.     movem.l    Scl_REGS,-(sp)
  174.  
  175.     add.l    #bm_Planes,a3
  176.  
  177.     GRAFCALL OwnBlitter
  178.     GRAFCALL WaitBlit
  179.  
  180.     move.l    #$dff000,a4        ; Custom Chip base addr.
  181.     move.w    #2,bltamod(a4)
  182.     move.w    #2,bltdmod(a4)
  183.     move.w    #$09f0,bltcon0(a4)    D=A   Use A , Use D
  184.     move.w    #$0000,bltcon1(a4)
  185.     move.w    #$ffff,bltafwm(a4)
  186.     move.w    #$ffff,bltalwm(a4)
  187.  
  188.     move.w    #BM_d-1,d2
  189. .loop1    GRAFCALL WaitBlit
  190.     move.l    (a3)+,a0
  191.     add.l    #GRID_OBJECT_HEIGHT*BM_width,a0
  192.     move.l    a0,bltdpt(a4)        Destination  M
  193.     addq.l    #2,a0
  194.     move.l    a0,bltapt(a4)        Source   M+2
  195.     move.w    #64*(BM_y-(2*GRID_OBJECT_HEIGHT))+(BM_width/2-1),bltsize(a4)
  196.  
  197.     dbra    d2,.loop1
  198.  
  199.     GRAFCALL DisownBlitter
  200.  
  201.     movem.l    (sp)+,Scl_REGS
  202.     rts
  203.  
  204. *==============
  205. * Scroll_Right
  206. *==============
  207.  
  208. Scroll_Right ; (Bitmap),a3
  209.  
  210. Scr_REGS    REG    a3/a4
  211.  
  212.     movem.l    Scr_REGS,-(sp)
  213.  
  214.     add.l    #bm_Planes,a3
  215.  
  216.     GRAFCALL OwnBlitter
  217.     GRAFCALL WaitBlit
  218.  
  219.     move.l    #$dff000,a4        ; Custom Chip base addr.
  220.     move.w    #2,bltamod(a4)
  221.     move.w    #2,bltdmod(a4)
  222.     move.w    #$09f0,bltcon0(a4)    ; D=A   Use A , Use D
  223.     move.w    #$0002,bltcon1(a4)    ; desc mode
  224.     move.w    #$ffff,bltafwm(a4)
  225.     move.w    #$ffff,bltalwm(a4)
  226.  
  227.     move.w    #BM_d-1,d2
  228. .loop1    GRAFCALL WaitBlit
  229.     move.l    (a3)+,a0
  230.     add.l    #BM_width*(BM_y-GRID_OBJECT_HEIGHT)-2,a0
  231.     move.l    a0,bltdpt(a4)        Destination  MAX
  232.     subq.l    #2,a0
  233.     move.l    a0,bltapt(a4)        Source   MAX-2
  234.     move.w    #64*(BM_y-(2*GRID_OBJECT_HEIGHT))+(BM_width/2-1),bltsize(a4)
  235.     dbra    d2,.loop1
  236.  
  237.     GRAFCALL DisownBlitter
  238.  
  239.     movem.l    (sp)+,Scr_REGS
  240.     rts
  241.  
  242. *==============
  243. * Scroll_Up
  244. *==============
  245.  
  246. Scroll_Up ; (Bitmap),a3
  247.  
  248. Scu_REGS    REG    a3/a4
  249.  
  250.     movem.l    Scu_REGS,-(sp)
  251.  
  252.     add.l    #bm_Planes,a3
  253.  
  254.     GRAFCALL OwnBlitter
  255.     GRAFCALL WaitBlit
  256.  
  257.     move.l    #$dff000,a4        ; Custom Chip base addr.
  258.     move.w    #4,bltamod(a4)
  259.     move.w    #4,bltdmod(a4)
  260.     move.w    #$09f0,bltcon0(a4)    ; D=A   Use A , Use D
  261.     move.w    #$0000,bltcon1(a4)
  262.     move.w    #$ffff,bltafwm(a4)
  263.     move.w    #$ffff,bltalwm(a4)
  264.  
  265.     move.w    #BM_d-1,d2
  266. .loop1    GRAFCALL WaitBlit
  267.     move.l    (a3)+,a0
  268.     add.l    #GRID_OBJECT_HEIGHT*BM_width+GRID_OBJECT_WIDTH/8,a0
  269.     move.l    a0,bltdpt(a4)        Destination
  270.     add.l    #BM_width*GRID_OBJECT_HEIGHT,a0
  271.     move.l    a0,bltapt(a4)        Source
  272.     move.w    #64*(BM_y-(3*GRID_OBJECT_HEIGHT))+(BM_width/2)-2,bltsize(a4)
  273.     dbra    d2,.loop1
  274.  
  275.     GRAFCALL DisownBlitter
  276.  
  277.     movem.l    (sp)+,Scu_REGS
  278.     rts
  279.  
  280.  
  281. *==============
  282. * Scroll_Down
  283. *==============
  284.  
  285. Scroll_Down ; (Bitmap),a3
  286.  
  287. Scd_REGS    REG    a3/a4
  288.  
  289.     movem.l    Scd_REGS,-(sp)
  290.  
  291.     add.l    #bm_Planes,a3
  292.  
  293.     GRAFCALL OwnBlitter
  294.     GRAFCALL WaitBlit
  295.  
  296.     move.l    #$dff000,a4        ; Custom Chip base addr.
  297.     move.w    #4,bltamod(a4)
  298.     move.w    #4,bltdmod(a4)
  299.     move.w    #$09f0,bltcon0(a4)    ; D=A   Use A , Use D
  300.     move.w    #$0002,bltcon1(a4)    ; desc mode
  301.     move.w    #$ffff,bltafwm(a4)
  302.     move.w    #$ffff,bltalwm(a4)
  303.  
  304.     move.w    #BM_d-1,d2
  305. .loop1    GRAFCALL WaitBlit
  306.     move.l    (a3)+,a0
  307.     add.l    #(BM_y-16)*BM_width-4,a0
  308.     move.l    a0,bltdpt(a4)            Destination
  309.     sub.l    #GRID_OBJECT_HEIGHT*BM_width,a0
  310.     move.l    a0,bltapt(a4)            Source
  311.     move.w    #64*(BM_y-(3*GRID_OBJECT_HEIGHT))+(BM_width/2)-2,bltsize(a4)
  312.     dbra    d2,.loop1
  313.  
  314.     GRAFCALL DisownBlitter
  315.  
  316.     movem.l    (sp)+,Scd_REGS
  317.     rts
  318.